﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace eSSP_example.Cpi 
{
    public enum CLS_entyState
    {
        CLS_ST_NONE = 0,  ///< 0x00  No actual CLS state, but useful for initialization
        CLS_ST_STARTUP = 0x01,  ///< 0x01  First state after power-on
        CLS_ST_INITIALIZATION = 0x02,  ///< 0x02  Initialization of subsystems
        CLS_ST_READY = 0x03,  ///< 0x03  No error, ready for operation
        CLS_ST_DISPENSE = 0x04,  ///< 0x04  Dispensing coins in progress
        CLS_ST_ACCEPTANCE = 0x05,  ///< 0x05  Accepting coins in progress
        CLS_ST_SETUP = 0x06,  ///< 0x06  Configuration enabled 
        CLS_ST_FW_UPDATE = 0x07,  ///< 0x07  Main Controls firmware update in progress
        CLS_ST_PURGE = 0x08,  ///< 0x08  Purge coins from payout area to output tray
        CLS_ST_NOT_USED_1 = 0x09,  ///< 0x09  <not implemented>
        CLS_ST_AUTOMATIC_FILL = 0x0A,  ///< 0x0A  <not implemented>
        CLS_ST_NOT_USED_2 = 0x0B,  ///< 0x0B  <not implemented>
        CLS_ST_AUTOMATIC_EMPTY = 0x0C,  ///< 0x0C  <not implemented>
        CLS_ST_NOT_USED_3 = 0x0D,  ///< 0x0D  <not implemented>
        CLS_ST_ERROR = 0x0E,  ///< 0x0E  An error occurred, safe state
        CLS_ST_HOPPER_FW_UPDATE = 0x0F,  ///< 0x0F  Hopper firmware update in progress
        CLS_ST_EMPTY_HOPPER = 0x10,  ///< 0x10  Empty one or more hoppers
        CLS_ST_MAINTAINANCE = 0x11,  ///< 0x11  <not implemented>
        CLS_ST_ACCEPTOR_FW_UPDATE = 0x12,  ///< 0x12  Acceptor firmware update in progress
        CLS_ST_CLEANING = 0x13,  ///< 0x13  Cleaning of pay-in area in progress
        CLS_ST_REJECT = 0x14,  ///< 0x14  Rejecting all coins
        CLS_ST_INSERTION = 0x15,  ///< 0x15  Observing input cup, starting acceptance if coin detected
        CLS_ST_POWER_DOWN = 0x16,  ///< 0x16  AC power is lost, saving data, shutting down
        CLS_ST_RESTART = 0x17,  ///< 0x17  Preparing for device restart
        CLS_ST_CLEAR = 0x18,  ///< 0x18  On error: clear pay-in area from coins, go to error then
        CLS_ST_COUNT                ///<       Number of declared states
    }

    /// \brief CLS system event categories
    public enum EVT_entyCategory
    {
        EVT_CATEGORY_INFORMATIONAL = 0,             ///< 0 Informational
        EVT_CATEGORY_ATTENTION,                     ///< 1 Attention
        EVT_CATEGORY_CRITICAL,                      ///< 2 Critical
        EVT_CATEGORY_SERVICE                        ///< 3 Service
    };
}
